RISC-V /Debug /Debug Module Status (dmstatus)

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

Interpret as Debug Module Status (dmstatus)

31 2827 2423 2019 1615 1211 87 43 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (none)version0 (invalid)confstrptrvalid 0 (hasresethaltreq)hasresethaltreq 0 (ready)authbusy 0 (false)authenticated 0 (anyhalted)anyhalted 0 (allhalted)allhalted 0 (anyrunning)anyrunning 0 (allrunning)allrunning 0 (anyunavail)anyunavail 0 (allunavail)allunavail 0 (anynonexistent)anynonexistent 0 (allnonexistent)allnonexistent 0 (anyresumeack)anyresumeack 0 (allresumeack)allresumeack 0 (anyhavereset)anyhavereset 0 (allhavereset)allhavereset 0 (impebreak)impebreak 0 (current)stickyunavail 0 (false)ndmresetpending

ndmresetpending=false, stickyunavail=current, authenticated=false, version=none, authbusy=ready, confstrptrvalid=invalid

Description

This register reports status for the overall Debug Module as well as the currently selected harts, as defined in {dmcontrol-hasel}. Its address will not change in the future, because it contains {dmstatus-version}.

Fields

version

0 (none): There is no Debug Module present.

1 (0.11): There is a Debug Module and it conforms to version 0.11 of this specification.

2 (0.13): There is a Debug Module and it conforms to version 0.13 of this specification.

3 (1.0): There is a Debug Module and it conforms to version 1.0 of this specification.

15 (custom): There is a Debug Module but it does not conform to any available version of this spec.

confstrptrvalid

0 (invalid): {dm-confstrptr0}–{dm-confstrptr3} hold information which is not relevant to the configuration structure.

1 (valid): {dm-confstrptr0}–{dm-confstrptr3} hold the address of the configuration structure.

hasresethaltreq

1 if this Debug Module supports halt-on-reset functionality controllable by the {dmcontrol-setresethaltreq} and {dmcontrol-clrresethaltreq} bits. 0 otherwise.

authbusy

0 (ready): The authentication module is ready to process the next read/write to {dm-authdata}.

1 (busy): The authentication module is busy. Accessing {dm-authdata} results in unspecified behavior.

authenticated

0 (false): Authentication is required before using the DM.

1 (true): The authentication check has passed.

anyhalted

This field is 1 when any currently selected hart is halted.

allhalted

This field is 1 when all currently selected harts are halted.

anyrunning

This field is 1 when any currently selected hart is running.

allrunning

This field is 1 when all currently selected harts are running.

anyunavail

This field is 1 when any currently selected hart is unavailable, or (if {dmstatus-stickyunavail} is 1) was unavailable without that being acknowledged.

allunavail

This field is 1 when all currently selected harts are unavailable, or (if {dmstatus-stickyunavail} is 1) were unavailable without that being acknowledged.

anynonexistent

This field is 1 when any currently selected hart does not exist in this hardware platform.

allnonexistent

This field is 1 when all currently selected harts do not exist in this hardware platform.

anyresumeack

This field is 1 when any currently selected hart has its ((resume ack bit)) set.

allresumeack

This field is 1 when all currently selected harts have their ((resume ack bit)) set.

anyhavereset

This field is 1 when at least one currently selected hart has been reset and reset has not been acknowledged for that hart.

allhavereset

This field is 1 when all currently selected harts have been reset and reset has not been acknowledged for any of them.

impebreak

If 1, then there is an implicit ebreak instruction at the non-existent word immediately after the Program Buffer. This saves the debugger from having to write the ebreak itself, and allows the Program Buffer to be one word smaller.

This must be 1 when {abstractcs-progbufsize} is 1.

stickyunavail

0 (current): The per-hart unavail bits reflect the current state of the hart.

1 (sticky): The per-hart unavail bits are sticky. Once they are set, they will not clear until the debugger acknowledges them using {dmcontrol-ackunavail}.

ndmresetpending

0 (false): Unimplemented, or {dmcontrol-ndmreset} is zero and no ndmreset is currently in progress.

1 (true): {dmcontrol-ndmreset} is currently nonzero, or there is an ndmreset in progress.

Links

() ()